package xin.zhiyin.工具;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class 日期时间 {
    /*时间格式：年月日时分秒*/
    public static String 获取当前年月日时分秒()
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strDate = sdf.format(new Date());
        return strDate;
    }
    /*时间格式：年月日*/
    public static String 获取当前年月日()
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String strDate = sdf.format(new Date());
        return strDate;
    }
    public static String 获取当前年份()
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
        String strDate = sdf.format(new Date());
        return strDate;
    }
    /*
    * 年月日：2020-10-30
    * */
    public static Date 字符串转换成Date(String 年月日){
        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
        try{
            return fmt.parse(年月日);
        }catch (ParseException e){
            e.printStackTrace();
            return null;
        }
    }
    /*
    * a:2020-10-30
    * b:2020-10-20
    * */
    public static boolean 日期A是否大于日期B(String a , String b)
    {
        if(字符串转换成Date(a) == null || 字符串转换成Date(b) == null)
        {
            return false;
        }
        return 字符串转换成Date(a).getTime() >= 字符串转换成Date(b).getTime();
    }
    public static boolean 是否为闰年(int year) {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            return true;
        }
        return false;
    }
    public int 相差年数(String 开始时间,String 结束时间)
    {
        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
        try{
            int 年数 = (int) ((fmt.parse(结束时间).getTime() - fmt.parse(开始时间).getTime()) / (1000 * 60 * 60 * 24) / 365);
            return 年数;
        }catch (Exception e){
            return 0;
        }
    }
    /*
    * 参数字符串格式：2020-10-30*/
    public static long 相差天数(String 开始日期字符串,String 结束日期字符串)
    {
        long 天数 = 0;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date 开始日期 = null;
        Date 结束日期 = null;
        try{
            开始日期 = sdf.parse(开始日期字符串);
            结束日期 = sdf.parse(结束日期字符串);
        }catch (ParseException e)
        {
            e.printStackTrace();
        }
        天数 = (结束日期.getTime() - 开始日期.getTime()) / (24 * 60 * 60 * 1000);
        return 天数;
    }
    public static boolean 效验日期是否合法(String 日期)
    {
        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
        try{
            fmt.parse(日期);
            return true;
        }catch (Exception e){
            return false;
        }
    }
    public static String n天之后的年月日时分秒(int 天数)
    {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE,天数); /* 日期减 如果不够减会将月变动 */
        Date date = calendar.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String 日期字符串 = sdf.format(date);
        return 日期字符串;
    }
    /*
    * 暂时不要用
    * */
    public static String n天之前的年月日时分秒(int 天数)
    {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE,天数); /* 日期减 如果不够减会将月变动 */
        Date date = calendar.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String 日期字符串 = sdf.format(date);
        return 日期字符串;
    }
    public static String Date转换为字符串(Date date, String format) {
        if (null == format) {
            format = "yyyy-MM-dd";
        }
        if (date != null) {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.format(date);
        } else {
            return "";
        }
    }
    public static String Date转换为字符串(Date date) {
        return Date转换为字符串(date, "yyyy-MM-dd");
    }
    public static Timestamp 获取时间戳() {
        return new Timestamp(new Date().getTime());
    }
}
